package 力扣热题100;

 class ListNode {
      int val;
      ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }
public class LeetCode10 {

    public static ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode cur=head;
        int count=0;
        while (cur!=null){
            cur=cur.next;
            count++;
        }
        ListNode node=new ListNode(0,head);//为了更加好删除，比如要删除第一个元素的时候就不能直接删除，需要借助辅助
        count=count-n+1;
        ListNode cur1=node;
        for (int i = 1; i <count ; i++) {
            cur1=cur1.next;
        }
        cur1.next=cur1.next.next;
        return node.next;
    }
//public static ListNode removeNthFromEnd(ListNode head, int n) {
//    ListNode dummy = new ListNode(0, head);
//    int length = getLength(head);
//    ListNode cur = dummy;
//    for (int i = 1; i < length - n + 1; ++i) {
//        cur = cur.next;
//    }
//    cur.next = cur.next.next;
//    ListNode ans = dummy.next;
//    return ans;
//}
//
//    public static int getLength(ListNode head) {
//        int length = 0;
//        while (head != null) {
//            ++length;
//            head = head.next;
//        }
//        return length;
//    }

    public static void main(String[] args) {
        ListNode listNode=new ListNode(1);
        ListNode listNode1=new ListNode(2);
        listNode.next=listNode1;
        removeNthFromEnd(listNode,2);
    }
}
